package ucam.acciones.clientes;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.tiles.Attribute;
import org.apache.tiles.AttributeContext;

import ucam.acciones.Accion;
import ucam.bean.Cliente;
import ucam.dao.DAOFactory;
import ucam.servlets.Singleton;
import ucam.dao.beans.ClientesDAO;

/**
 * 
 * @author FERNANDO VIVANCOS MORENO 23286145W
 * fecha realizacion: 28 de mayo de 2010
 * fecha modificacion: 28 de mayo de 2010
 *
 */

public class AddCliente extends Accion {

	Cliente cliente = new Cliente();
	private boolean tr;
	
	@Override
	protected void doAttributeContext(AttributeContext attributeContext) {
		
		attributeContext.putAttribute("header",new Attribute("/jsp/tiles/banner.jsp"));
		attributeContext.putAttribute("menu",new Attribute("/jsp/tiles/common_menu.jsp"));
		/*
		 * Si alguno de los campos del formulario esta vacio redirijo a la pagina de error de campo vacio del formulario al realizar el render
		 * si no redirigo a la pagina de usuario insertado satisfacctoriamente
		 * */
		if((cliente.getNombre().equals("")) || (cliente.getDni().equals("")) || 
				(cliente.getDireccion().equals("")) || (cliente.getEmail().equals("")) || (cliente.getContacto().equals("")) || (cliente.getTelefono().equals(""))) {
			attributeContext.putAttribute("body",new Attribute("/jsp/tiles/clientes/campoVacioAddCliente.jsp"));
		} else {
			if(tr == false) {
				attributeContext.putAttribute("body",new Attribute("/jsp/tiles/clientes/addCliente.jsp"));
			} else {
				attributeContext.putAttribute("body",new Attribute("/jsp/tiles/clientes/existeCliente.jsp"));
			}
		}
		attributeContext.putAttribute("footer",new Attribute("/jsp/tiles/credits.jsp"));
	}

	@Override
	public void execute(HttpServletRequest req, HttpServletResponse resp) {
		this.setDefinition("myapp.homepage");
		
		if((req.getParameter("nombre") != null) || (req.getParameter("dni") != null) || 
				(req.getParameter("direccion") != null) || (req.getParameter("email") != null) || (req.getParameter("contacto") != null) || (req.getParameter("telefono") != null)) {
			cliente.setNombre(req.getParameter("nombre"));
			cliente.setDni(req.getParameter("dni"));
			cliente.setDireccion(req.getParameter("direccion"));
			cliente.setEmail(req.getParameter("email"));
			cliente.setContacto(req.getParameter("contacto"));
			cliente.setTelefono(req.getParameter("telefono"));
		} else {
			renderPage(req, resp);
		}
		
		//Recuperamos la factoria a utilizar. MySQL o Oracle o etc. Depende del motor al que nos conectemos.
		DAOFactory daof = Singleton.getDAOFactory();
		
		//Recuperamos el DAO para "trabajar" con el bean Usuario
		ClientesDAO udao = daof.getClientesDAO();
		//Recuperamos las acciones que se corresponden.
		tr = udao.insert(cliente);
		
		//redirigimos a la pagina de cliente insertado correctamente o cliente existente en la base de datos
		if(tr == false) { 
			renderPage(req, resp);
		} else {
			renderPage(req, resp);
		}
	}

}
